package com.easylinkin.linkappapi.quality.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
import java.util.Set;

/**
 * <p>
 * 问题库
 * </p>
 *
 * @author kanyuanfeng
 * @since 2022-08-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("app_problem")
public class Problem extends Model<Problem> {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /**
     * 租户id
     */
    @TableField("tenant_id_")
    private String tenantId;

    /**
     * 问题类别id
     */
    @TableField("problem_type_id_")
    private Integer problemTypeId;

    /**
     * 父路径id
     */
    @TableField("full_id_")
    private String fullId;

    /**
     * 全名
     */
    @TableField("full_name_")
    private String fullName;

    /**
     * 等级
     */
    @TableField("level_")
    private Integer level;

    /**
     * 描述
     */
    @TableField("content_")
    private String content;

    /**
     * 整改要求
     */
    @TableField("change_requirement_")
    private String changeRequirement;

    /**
     * 整改时限(天)
     */
    @TableField("change_Limit_")
    private Integer changeLimit;

    /**
     * 启用状态(1启用0禁用)
     */
    @TableField("disable_")
    private Integer disable;

    /**
     * 编码
     */
    @TableField("code_")
    private String code;

    /**
     * 排序
     */
    @TableField("order_")
    private Integer order;

    /**
     * 是否默认数据(1是0否) 为0-显示编辑删除；为1-隐藏编辑删除
     */
    @TableField("is_default_")
    private Integer isDefault;

    /**
     * 创建人id
     */
    @TableField("creator_id_")
    private Long creatorId;

    /**
     * 创建日期
     */
    @TableField("create_time_")
    private Date createTime;

    /**
     * 修改人id
     */
    @TableField("modify_id_")
    private Long modifyId;

    /**
     * 修改时间
     */
    @TableField("modify_time_")
    private Date modifyTime;

    /**
     * 备注
     */
    @TableField("remark_")
    private String remark;

    /**
     * 源数据主键(复制默认数据时有)
     */
    @TableField("src_id_")
    private Integer srcId;

    /**
     * id集合
     * @return
     */
    @TableField(exist = false)
    private Set<Integer> ids;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

    /**
     * 最后同步时间
     */
    private Date lastPushTime;

    public boolean mainEquals(Problem problemEnt) {
        if (problemEnt == null) {
            return false;
        }
        boolean result = Objects.equals(this.fullName, problemEnt.getFullName())
                &&
                Objects.equals(this.level, problemEnt.getLevel())
                &&
                Objects.equals(this.content, problemEnt.getContent())
                &&
                Objects.equals(this.changeRequirement, problemEnt.getChangeRequirement())
                &&
                Objects.equals(this.changeLimit, problemEnt.getChangeLimit())
                &&
                Objects.equals(this.disable, problemEnt.getDisable())
                &&
                Objects.equals(this.remark, problemEnt.getRemark())
                &&
                Objects.equals(this.level, problemEnt.getLevel());
        return result;
    }
}
